import javax.swing.*;
import java.awt.*;

/** Log d'informations et bugs
  *
  * @author     Nemesis (nemesis_tt@yahoo.fr)
  * @version    08/05/04
  */

public class Log extends JPanel {

// Les éléments de la vue (IHM)
// ----------------------------
        
    /** Eléments du log */
    private JTextArea log;
    
    /** Couleurs */
    private Color coul_evol = Color.BLUE;

// Le constructeur
// ---------------

    /** Construire le panel d'étapes */
    public Log() {
        super();
        
        //  Définition du layout de la zone
        setLayout(new BorderLayout());
        
        // Fenêtre de log
        log = new JTextArea();
        log.setLineWrap(true);
        log.setEditable(false);
        // Définition de la police
        log.setFont(new Font("SansSerif", Font.PLAIN, 10));
        
        // Gestion du défilement
        JScrollPane scroll = new JScrollPane(log);
        scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        // Je ne sais pas comment forcer la barre à rester en bas
        scroll.getViewport().setViewPosition(new Point(0,10000));
        
        // Ajout final de l'élement
        add(scroll);
    }
    
    /** Ecriture d'une ligne de texte
     *  encadrée dans le log avec un
     *  séparateur particulier
     *  
     *  @param  String texte    ligne à écrire
     *  @param  String sep      chaine motif de séparation
     */
    private void titre(String texte, String sep) {
        ligne(sep);
        println(texte);
        ligne(sep);
    }
    
    /** Ecriture d'une ligne de texte
     *  encadrée dans le log
     *  
     *  @param  String texte    ligne à écrire
     */
    private void titre(String texte) {
        titre(texte,"-");
    }

    /** Tracé d'une ligne de séparation
     *  
     *  @param  String sep      caractère de séparation
     */
    private void ligne(String sep) {
        for(int c=0 ; c<30 ; c++)
            log.append(sep);   
        log.append("\n");
    }
    
    /** Affichage de message
     *  
     *  @param  String message message à afficher
     */
    public void print(String message) {
        log.append(message);
    }
    
    /** Affichage de message avec retour
     *  
     *  @param  String message message à afficher
     */
    public void println(String message) {
        print(message);
        log.append("\n");
    }
}
